<?php
/**
 * 模块: 权限检测类
 * User: 文丹
 * Date: 2018/1/23
 * Time: 14:51
 */
namespace app\base\controller;
use think\Request;
use think\Db;
use think\Controller;
use think\Session;

class Power extends Controller{
    /**
     * 权限检测方法
     * user:文丹
     * @return int
     */
    public function testing(){
        $request = Request::instance();// 获取当前域名
        //  var_dump($request);die;
        // $module = $request->module();//model名
        $controller = $request->controller();//controller名
        $action = $request->action();
        $href = strtolower($controller."/".$action);
        // var_dump($href);die;
        $id = Session::get('managerId');
        if (!isset($id)) {
            //排除登录页，默认登录页不限制权限
            if ($href != 'admin/Index/index') {
                $this->error('你好，请先登录','admin/Login/index',['href'=>$href]);
            }

        } else {

            $roleId =  Db::name('manager')->where('id',$id)->value('role_id');
            // var_dump($roleId);die;
            if($roleId!=1){
                //查询全部菜单的地址
                $menuUrl =Db::name('menu')->field('url')->select();
                $url = array();
                foreach($menuUrl as $v){
                    $url[]= strtolower($v['url']);
                }
                /*echo "<pre>";
                print_r($url);
              //  print_r($href);
                echo "</pre>";die;*/

                if (in_array(strtolower($href), $url)) {//判断当前地址在菜单表中再判断权限，否则不验证权限
                    //dump($roleId) ;die;
                    //查询权限角色拥有的功能信息（其中包括menu_url）
                    $role        = Db::name('role')->where('id',$roleId)->find();
                    // print_r($role);die;
                    $menu_config = json_decode($role['menu_config'],true);
                    $menu =array();
                    foreach($menu_config as $k=>$v){
                        $menu[] = Db::name('menu')->where('id','in',$v['menu_id'])->field('url')->select();
                    }
                    /*echo "<pre>";
                    print_r($menu);*/
                    $menuList = array();
                    foreach($menu as $v){
                        foreach($v as $vo){
                            $menuList[]= $vo['url'];
                        }
                    }
                    /*echo "<pre>";
                   print_r($href);
                   print_r($menuList);
                   echo "</pre>";die; *///empty($menuList)
                    //判断当前地址是否在当前菜单中，验证改用是否有该权限
                    if(!in_array(strtolower($href), $menuList)){
                        $this->error('你没有相关权限','admin/index/welcome');
                    }
                }else{
                    $this->error('你没有相关权限','admin/index/welcome');
                }

            }
        }
    }




}
